#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    if(argc != 2)
    {
        printf("please input 2 argument! such as ./a.out <file_src>\n");
        return -1;
    }

    char buf[100] = {0};
    char *s = NULL;
    char ch = 0;
    int ret = 0;

    FILE *fp = fopen(argv[1], "w+");
    if(fp == NULL)
    {
        perror("fopen fp fail");
        return -1;
    }

    printf("file:");
    while(1)
    {
        fgets(buf, sizeof(buf), stdin);
        // fputs(buf, fp);
        // buf[strlen(buf)-1] = '\0';//可以加上来去掉换行符
        fprintf(fp, "%s", buf);//将buf中的数据打印到fp流中
        printf("continue?(y or n):");
        ch = getchar();
        if(ch == 'n' || ch == 'N')
        {
            break;
        }
        while(getchar() != '\n');//就是清空输入缓冲区的数据，包括'\n'
        printf("ch=%c\n", ch);
        // fflush(stdin);//清空stdin缓冲区所有内容
        // getchar();
        printf("fprintf end: buf=%s\n", buf);
    }

    rewind(fp);
    printf("-------\n");
    //将fp流中的数据输入到buf中
    while(1)
    {
        /* ret = fscanf(fp, "%s", buf);
        if(ret == EOF)
        {
            if(feof(fp))
            {
                printf("end of file");
                break;
            }
            else if(ferror(fp))
            {
                printf("fscanf file err!");
                break;
            }
        }        //只是用来打印到屏幕上比较高效
        printf("buf=%s, ret = %d\n", buf, ret); */

        ch = fgetc(fp);
        if(ch != EOF)
        {
            if(ch >= 'a' && ch <= 'z')
            {
                ch = ch - 32;
            }
        }
        else
        {
            if(feof(fp))
            {
                printf("end of file");
                break;
            }
            else if(ferror(fp))
            {
                printf("fscanf file err!");
                break;
            }
        }
        printf("%c", ch);
    }
    // printf("\n");

    // printf("2.buf=%s", buf);
    fflush(stdout);
    return 0;
    
    
}